package com.hdl;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

/**
 * 创建排序的Mapper
 * 读取文件里的数字进行排序
 * 第一对：K1: LongWritable， V1: Text
 * 读取文件数据Text
 * 第二对：K2: LongWritable， V2: LongWritable
 * 因为map reduce会自动对key进行排序，所以以读取到的数据为key,就自动进行排序了
 * 但是：map阶段会对相同的key进行合并为一个迭代器到reduce阶段
 * 所以：reduce阶段对排好序的每一组数据进行处理，这里将以读取到的数字为key和value, 方便reduce阶段遍历value并进行序号的自增
 */
public class SortMapper  extends Mapper<LongWritable, Text, LongWritable, LongWritable>{
    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        // 获取一行数据，因为一行数据只有一个数字
        String text = value.toString();

        // 将数字转换为Long
        key.set(Long.parseLong(text));

        // 以数字为Key直接写入
        context.write(key, key);

    }
}
